/*
package com.tofacebook.proxy.config;

import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
@Slf4j
public class DynamicProxy {

    //我们要生产的代理并不知道具体是那个包中的class 所有我们再这个需要声明一个Object来代表这个代理类
    private Object dynamicClass;

    public DynamicProxy(Object dynamicClass) {
        this.dynamicClass = dynamicClass;
    }

    */
/**
     * 使用jdk中的Proxy.newInstance()方法来构造我们代理类对象,需要传递三个参数
     * 1.ClassLoader loader, 根据类获取类的加载器
     * 2.Class<?>[] interfaces, 获取目标接口的集合
     * 3.InvocationHandler h ：执行处理，就是通过来实现接口中的方法，
     *
     *//*

    public Object getClassByProxy(){
        ClassLoader loader = dynamicClass.getClass().getClassLoader();
        Class<?>[] interfaces = dynamicClass.getClass().getInterfaces();
        InvocationHandler h = getInvocationHandler();
        return Proxy.newProxyInstance(loader,interfaces,h);
    }

    private InvocationHandler getInvocationHandler() {
        return new InvocationHandler() {
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                Object result = null;
                try {
                    log.info("操作之前：{}",args);
                    result = method.invoke(dynamicClass,args);
                    log.info("返回的结果为：{}",result);
                    log.info("操作之后：{}",args);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                    log.info("出现异常后要处理的结果：{}", e.getMessage());
                } finally {
                    //程序出现错误后，程序会终止掉，那么在终止之前我们还需做些什么事情呢？？
                    log.info("程序终止之前我们还需做一些事情：{}");
                }
                return result;
            }
        };
    }
}
*/
